layui.define(['form','table','dialogUtil','baseUtil','checkUtil','treeGrid'],function(exports){
    var form = layui.form,
        table = layui.table,
        dialogUtil = layui.dialogUtil,
        treeGrid = layui.treeGrid,
        checkUtil = layui.checkUtil,
        baseUtil=layui.baseUtil;
    var pageUtil = {
        /***
         * @Author: YuShengQiang
         * @Date: 2018-11-27 11:16
         * @Description:初始化列表数据
         * @param cols 必填 展示列表参数
         * @param url 必填 数据接口URL
         * @param isPage 选填 默认是分页
         */
        initDate:function(cols,url,isPage){
            if(isPage!="false"&&isPage!=false){
                isPage=true;//默认分页
            }
            var tableIns=table.render({
                elem: '#entityList',
                url : url,
                cellMinWidth : 95,
                request: {
                    pageName: 'pageNum',//当前页面
                    limitName:'pageSize'//每页数量
                },
                page : isPage,
                height : "full-125",
                limit : 20,
                method:'post',
                limits : [10,15,20,25],
                id : "entityList",
                cols : [cols]
            });
            return tableIns;
        },
        /**
         * @Author: YuShengQiang
         * @Date: 2018-11-27 11:16
         * @Description: 字典码获取
         * @param cols 必填 字典码code，多个以“，”隔开
         * @param successFn 必填 调用成功回调方法
         */
        initDict:function (params,successFn) {
            baseUtil.postMethod("/sysDictContent/listByDictTypes",{
                dictTypes : params
            },function (result) {
                if(0==result.code){
                    //成功
                    successFn(result.data);
                }else{
                    top.layer.msg(result.msg);
                }
            });
        },
        /**
         * @Author: YuShengQiang
         * @Date: 2018-11-27 11:16
         * @Description: 特殊字典码获取
         * @param code 必填 参数code值
         * @param successFn 必填 调用成功回调方法
         */
        initDictByUrl:function (url,code,successFn) {
            baseUtil.postMethod(url,{
                code : code
            },function (result) {
                if(0==result.code){
                    //成功
                    successFn(result.data);
                }else{
                    top.layer.msg(result.msg);
                }
            });
        },
        /**
         * @Author: YuShengQiang
         * @Date: 2018-11-27 11:16
         * @Description:字典码下拉框展示
         * @param obj 必填 下拉框对象
         * @param dataList 必填 展示对象
         * @param showTitle 非必填 第一行展示题目（如，全选，请选择）
         * @param showValue 非必填 默认选择值
         */
        showDict:function (obj,dataList,showTitle,showValue) {
            if(showTitle!=null&&showTitle!=""&&showTitle!="undefined"){
                obj.append("<option value=''>"+showTitle+"</option>");
            }
            for(var i=0;i<dataList.length;i++){
                if(showValue!=null&&showValue!=""&&showValue!="undefined"){
                    if(showValue==dataList[i].value){
                        obj.append("<option selected value='"+dataList[i].value+"'>"+dataList[i].name+"</option>");
                    }else{
                        obj.append("<option value='"+dataList[i].value+"'>"+dataList[i].name+"</option>");
                    }
                }else{
                    obj.append("<option value='"+dataList[i].value+"'>"+dataList[i].name+"</option>");
                }

            }
            form.render();
        },
        /**
         * @Author: YuShengQiang
         * @Date: 2018-11-27 11:16
         * @Description:获取字典码值匹配的名称
         * @param dictType 必填 所需字典码code
         * @param dictData 必填 字典码集合
         * @param value 必填 所需字典码值
         */
        aceeptDictContentName:function (dictData,dictType,value) {
            for(var i=0;i<dictData.length;i++){
                var obj=dictData[i];
                if(obj.dictType==dictType&&obj.value==value){
                    return obj.name;
                }
            }
            return "";
        },
        /**
         * @Author: YuShengQiang
         * @Date: 2018-11-27 11:16
         * @Description:获取指定字典码集合
         * @param dictType 必填 所需字典码code
         * @param dictData 必填 字典码集合
         */
        aceeptDictContentList:function (dictData,dictType) {
            var resultDate=[];
            for(var i=0;i<dictData.length;i++){
                var obj=dictData[i];
                if(obj.dictType==dictType){
                    resultDate.push(obj);
                }
            }
            return resultDate;
        },
        /**
         * @Author: YuShengQiang
         * @Date: 2018-11-27 11:16
         * @Description:工具栏搜索
         * @param params 必填 参数，json格式
         */
        seacher:function (params) {
            table.reload("entityList",{
                page: {
                    curr: 1 //重新从第 1 页开始
                },
                where: params
            })
        },
        /**
         * @Author: YuShengQiang
         * @Date: 2018-11-27 11:16
         * @Description:删除功能
         * @param url 必填 删除URL
         * @param title 必填 提示标题
         * @param params 必填 参数，json格式
         * @param successFn 必填 成功回调
         */
        delete:function (title,url,params,successFn) {
            if (title == null || title == ""){
                title = "您确定要删除选中项";
            }
            dialogUtil.confirm(title,function(){
                baseUtil.getMethodResult(url,params,function (data) {
                    if(typeof successFn=='function'){
                        successFn(data);
                    }
                });
            },function(){
            });
        },
        /**
         * @Author: YuShengQiang
         * @Date: 2018-11-27 11:16
         * @Description:导出功能
         * @param url 必填 删除URL
         * @param title 必填 提示标题
         * @param params 必填 参数，json格式
         * @param successFn 必填 成功回调
         */
        export:function (url,params) {
            dialogUtil.postMethodResult(url,params,function (result) {
                top.layer.msg("导出成功");
            });
        },
        /**
         * @Author: YuShengQiang
         * @Date: 2018-11-27 11:16
         * @Description:编辑功能
         * @param url 必填 删除URL
         * @param id 必填 tabId
         * @param tabName 必填 tab名称
         */
        editPopup:function (name,url) {
            dialogUtil.popUp(name,url);
        },
        /**
         * @Author: YuShengQiang
         * @Date: 2018-11-27 11:16
         * @Description:弹窗编辑功能
         * @param url 必填 删除URL
         * @param tabName 必填 弹窗名称
         */
        edit:function (id,url,tabName) {
            parent.tab(id,url,tabName);
        },
        /**
         * @Author: YuShengQiang
         * @Date: 2018-11-27 11:16
         * @Description:获取table选中复选框id集合
         * @param url 必填 删除URL
         * @param title 必填 提示标题
         * @param params 必填 参数，json格式
         * @param successFn 必填 成功回调
         */
        checkBoxCheckedIds:function () {
            var checkStatus = table.checkStatus('entityList')
                ,data = checkStatus.data;
            var ids=[];
            if(data.length>0){
                for(var i=0;i<data.length;i++){
                    var obj=data[i];
                    ids.push(obj.id);
                }
                return ids.join(",");
            }else{
                top.layer.msg("请先选择对象");
                return null;
            }
        },
        /***
         * @Author: YuShengQiang
         * @Date: 2018-11-27 11:16
         * @Description:初始化treeGrid列表数据
         * @param cols 必填 展示列表参数
         * @param url 必填 数据接口URL
         * @param isOpenDefault 选填 节点默认是展开还是折叠【默认展开】
         * @param treeUpId 选填 树形父id字段名称
         * @param treeShowName 选填 以树形式显示的字段
         */
        initTreeGridDate:function(cols,url,isOpenDefault,treeUpId,treeShowName){
            if(checkUtil.isEmpty(isOpenDefault)){
                isOpenDefault=true;//默认展开
            }
            if(checkUtil.isEmpty(treeUpId)){
                treeUpId='parentId';
            }
            if(checkUtil.isEmpty(treeShowName)){
                treeShowName='menuName';
            }
            var treeGridTable=treeGrid.render({
                id:'entityList'
                ,elem: '#entityList'
                ,url:url
                ,cellMinWidth: 100
                ,idField:'id'//必須字段
                ,treeId:'id'//树形id字段名称
                ,treeUpId:treeUpId//树形父id字段名称
                ,treeShowName:treeShowName//以树形式显示的字段
                ,heightRemove:[".dHead",10]//不计算的高度,表格设定的是固定高度，此项不生效
                ,height:'100%'
                ,isFilter:false
                ,iconOpen:false//是否显示图标【默认显示】
                ,isOpenDefault:isOpenDefault//节点默认是展开还是折叠【默认展开】
                ,loading:true
                ,method:'post'
                ,isPage:false
                ,cols: [cols]
                ,parseData:function (res) {//数据加载后回调
                    return res;
                }
                ,onClickRow:function (index, o) {
                    console.log(index,o,"单击！");
                    //msg("单击！,按F12，在控制台查看详细参数！");
                }
                ,onDblClickRow:function (index, o) {
                    console.log(index,o,"双击");
                    //msg("双击！,按F12，在控制台查看详细参数！");
                }
                ,onCheck:function (obj,checked,isAll) {//复选事件
                    console.log(obj,checked,isAll,"复选");
                    //msg("复选,按F12，在控制台查看详细参数！");
                }
                ,onRadio:function (obj) {//单选事件
                    console.log(obj,"单选");
                    //msg("单选,按F12，在控制台查看详细参数！");
                }
            });
            return treeGridTable;
        },
        /***
         * @Author: YuShengQiang
         * @Date: 2018-11-27 11:16
         * @Description:初始化treeGrid监听
         * @param successFn 选填 成功回调
         */
        initTreeGridOn:function(successFn){
            treeGrid.on('tool(entityList)',function (obj) {
                if(typeof successFn=='function'){
                    successFn(obj);
                }
            });
        },
        /***
         * @Author: YuShengQiang
         * @Date: 2018-11-27 11:16
         * @Description:初始化treeGrid查询
         * @param successFn 选填 成功回调
         */
        initTreeGridQuery:function(data){
            treeGrid.query('entityList',{
                where:data
            });
        }
    }

    //输出baseutil接口
    exports('pageUtil', pageUtil);
});



